package com.ly.heart.domain;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ly.common.core.domain.BaseVo;
import lombok.Data;
import com.ly.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * 金蝶-财务模块-应收票据;对象 erp_king_finance_receipt_bill_info
 *
 * @author wutao
 * @date 2024-06-22
 */
@TableName("erp_king_finance_receipt_bill_info")
@ApiModel(value = "erp_king_finance_receipt_bill_info对象", description = "金蝶-财务模块-应收票据;")
@Data
public class KingFinanceReceiptBillEntity extends BaseVo {
    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @TableId(value = "id", type = IdType.INPUT)
    private String id;

    /**
     * 票据类型；select走字典
     */
    @ApiModelProperty("登录公司")
    @TableField("dept_id")
    @Excel(name = "登录公司")
    private String deptId;

    /**
     * {label: "商业承兑汇票", value: "1",},
     * {label: "信用证", value: "2",},
     * {label: "银行承兑汇票", value: "3",},
     * {label: "电子汇兑票", value: "4",},
     */
    @ApiModelProperty("票据类型；select走字典")
    @TableField("bill_type")
    @Excel(name = "票据类型；select走字典")
    private String billType;

    /**
     * 票据(包)号，文本录入
     */
    @ApiModelProperty("票据(包)号，文本录入")
    @TableField("bill_pack_no")
    @Excel(name = "票据(包)号，文本录入")
    private String billPackNo;

    /**
     * 票据号：勾选上等分化票据，对应票据号显示票据号+区间号
     */
    @ApiModelProperty("票据号：勾选上等分化票据，对应票据号显示票据号+区间号")
    @TableField("bill_no")
    @Excel(name = "票据号：勾选上等分化票据，对应票据号显示票据号+区间号")
    private String billNo;

    /**
     * 子票据开始序号，文本
     */
    @ApiModelProperty("子票据开始序号，文本")
    @TableField("sub_bill_start_index")
    @Excel(name = "子票据开始序号，文本")
    private Integer subBillStartIndex;

    /**
     * 子票据终止序号,自动生成=票面金额*100
     */
    @ApiModelProperty("子票据终止序号,自动生成=票面金额*100")
    @TableField("sub_bill_end_index")
    @Excel(name = "子票据终止序号,自动生成=票面金额*100")
    private Integer subBillEndIndex;

    /**
     * 币别Id,dialog走接口
     */
    @ApiModelProperty("币别Id,dialog走接口")
    @TableField("king_base_currency_id")
    @Excel(name = "币别Id,dialog走接口")
    private String kingBaseCurrencyId;

    /**
     * 签发日
     */
    @ApiModelProperty("签发日")
    @TableField("issuance_time")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "签发日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date issuanceTime;

    /**
     * 到期日，该值必须大于签发日
     */
    @ApiModelProperty("到期日，该值必须大于签发日")
    @TableField("due_time")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "到期日，该值必须大于签发日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date dueTime;

    /**
     * 期限(天数)
     */
    @ApiModelProperty("期限(天数)=到日期-签发日")
    @TableField("pay_term")
    @Excel(name = "期限(天数)")
    private Integer payTerm;

    /**
     * 票面金额
     */
    @ApiModelProperty("票面金额")
    @TableField("face_amount")
    @Excel(name = "票面金额")
    private String faceAmount;

    /**
     * 票面利率
     */
    @ApiModelProperty("票面利率")
    @TableField("face_rate")
    @Excel(name = "票面利率")
    private String faceRate;

    /**
     * 到期金额,取票面金额
     */
    @ApiModelProperty("到期金额,取票面金额")
    @TableField("due_amount")
    @Excel(name = "到期金额,取票面金额")
    private String dueAmount;

    /**
     * 出票人,文本
     */
    @ApiModelProperty("出票人,文本")
    @TableField("ticketing_user")
    @Excel(name = "出票人,文本")
    private String ticketingUser;

    /**
     * 承兑人，文本
     */
    @ApiModelProperty("承兑人，文本")
    @TableField("acceptance_user")
    @Excel(name = "承兑人，文本")
    private String acceptanceUser;

    /**
     * 承兑协议编号,文本
     */
    @ApiModelProperty("承兑协议编号,文本")
    @TableField("acceptance_number")
    @Excel(name = "承兑协议编号,文本")
    private String acceptanceNumber;

    /**
     * 承兑日期
     */
    @ApiModelProperty("承兑日期")
    @TableField("acceptance_time")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "承兑日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date acceptanceTime;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    @TableField("remarks")
    @Excel(name = "备注")
    private String remarks;

    /**
     * 收款组织Id,当前登录公司
     */
    @ApiModelProperty("收款组织Id,当前登录公司")
    @TableField("receipt_dept_id")
    @Excel(name = "收款组织Id,当前登录公司")
    private String receiptDeptId;

    /**
     * 结算组织Id,dialog接口
     */
    @ApiModelProperty("结算组织Id,dialog接口")
    @TableField("settlement_dept_id")
    @Excel(name = "结算组织Id,dialog接口")
    private String settlementDeptId;

    /**
     * 票据流水号,唯一验证
     */
    @ApiModelProperty("票据流水号/票据编码，自动生成,唯一验证")
    @TableField("bill_serial_number")
    @Excel(name = "票据流水号,唯一验证")
    private String billSerialNumber;

    /**
     * 付款单位类型；select走字典
     */
    @ApiModelProperty("付款单位类型；" +
            "客户：BD_Customer\n" +
            "其他往来单位：FIN_OTHERS\n" +
            "供应商：BD_Supplier\n" +
            "组织机构：ORG_Organizations")
    @TableField("pay_dept_type")
    @Excel(name = "付款单位类型；select走字典")
    private String payDeptType;

    /**
     * 付款单位,dialog走接口
     */
    @ApiModelProperty("付款单位,根据付款单位类型决定走什么接口")
    @TableField("pay_dept_id")
    @Excel(name = "付款单位,dialog走接口")
    private String payDeptId;

    /**
     * 收票日
     */
    @ApiModelProperty("收票日")
    @TableField("receive_time")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "收票日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date receiveTime;

    /**
     * 交易金额
     */
    @ApiModelProperty("交易金额")
    @TableField("transaction_amount")
    @Excel(name = "交易金额")
    private String transactionAmount;

    /**
     * 销售组织
     */
    @ApiModelProperty("销售组织")
    @TableField("sale_org_id")
    @Excel(name = "销售组织")
    private String saleOrgId;

    @ApiModelProperty("销售部门")
    @TableField("sale_dept_id")
    @Excel(name = "销售组织")
    private String saleDeptId;

    @ApiModelProperty("销售员")
    @TableField("sale_user_id")
    @Excel(name = "销售组织")
    private String saleUserId;

    /**
     * 结算状态；1：为空；2：拆分；3：背书；4：背书退回；5：贴现；6：到期收款；7：退票；8：质押；9：撤押；
     */
    @ApiModelProperty("结算状态；1：为空；2：拆分；3：背书；4：背书退回；5：贴现；6：到期收款；7：退票；8：质押；9：撤押；")
    @TableField("settlement_status")
    @Excel(name = "结算状态；1：为空；2：拆分；3：背书；4：背书退回；5：贴现；6：到期收款；7：退票；8：质押；9：撤押；")
    private Integer settlementStatus;

    /**
     * 是否支持拆分；1：是；2：否；
     */
    @ApiModelProperty("是否支持拆分；1：是；2：否；")
    @TableField("is_split")
    @Excel(name = "是否支持拆分；1：是；2：否；")
    private Boolean isSplit;

    /**
     * 等分化票据;1:是；2：否
     */
    @ApiModelProperty("等分化票据;1:是；2：否")
    @TableField("is_separate")
    @Excel(name = "等分化票据;1:是；2：否")
    private Boolean isSeparate;

    /**
     * 等分化票据;1:是；2：否
     */
    @ApiModelProperty("子票据包区间，前端计算")
    @TableField("sub_pack_interval")
    @Excel(name = "子票据包区间")
    private String subPackInterval;

    /**
     * 等分化票据;1:是；2：否
     */
    @ApiModelProperty("子票据包数量，前端计算")
    @TableField("sub_bill_number")
    @Excel(name = "子票据包数量")
    private Integer subBillNumber;

    /**
     * 拆分后的父Id
     */
    @ApiModelProperty("拆分后的父Id")
    @TableField("parent_id")
    @Excel(name = "拆分后的父Id")
    private String parentId;

    /**
     * 付款银行
     */
    @ApiModelProperty("付款银行")
    @TableField("pay_bank")
    @Excel(name = "付款银行")
    private String payBank;

    /**
     * 付款银行账号
     */
    @ApiModelProperty("付款银行账号")
    @TableField("pay_bank_account")
    @Excel(name = "付款银行账号")
    private String payBankAccount;

    /**
     * 付款银行账户名称
     */
    @ApiModelProperty("收款银行账户名称")
    @TableField("pay_bank_name")
    @Excel(name = "付款银行账户名称")
    private String payBankName;

    /**
     * 付款银行账户地址
     */
    @ApiModelProperty("付款银行账户地址")
    @TableField("pay_bank_address")
    @Excel(name = "付款银行账户地址")
    private String payBankAddress;

    /**
     * 收款银行Id,dialog走接口，取烈阳公司银行列表
     */
    @ApiModelProperty("收款银行Id,dialog走接口，取烈阳公司银行列表")
    @TableField("receipt_bank_id")
    @Excel(name = "收款银行Id,dialog走接口，取烈阳公司银行列表")
    private String receiptBankId;

    /**
     * 收款银行账号
     */
    @ApiModelProperty("收款银行账号")
    @TableField("receipt_bank_account")
    @Excel(name = "收款银行账号")
    private String receiptBankAccount;

    /**
     * 收款银行名称
     */
    @ApiModelProperty("收款银行名称")
    @TableField("receipt_bank_name")
    @Excel(name = "收款银行名称")
    private String receiptBankName;

    /**
     * 收款银行地址
     */
    @ApiModelProperty("收款银行地址")
    @TableField("receipt_bank_address")
    @Excel(name = "收款银行地址")
    private String receiptBankAddress;

    @ApiModelProperty("可撤销，1 为 true，空为false")
    @TableField("is_revocable")
    @Excel(name = "可撤销")
    private Boolean isRevocable;

    @ApiModelProperty("期初")
    @TableField("is_opening")
    @Excel(name = "期初")
    private Boolean isOpening;

    @ApiModelProperty("带追索权")
    @TableField("is_with_recourse")
    @Excel(name = "带追索权")
    private Boolean isWithRecourse;

    @ApiModelProperty("电子票据")
    @TableField("is_electronic_bills")
    @Excel(name = "电子票据")
    private Boolean isElectronicBills;

    @ApiModelProperty("创建人")
    @TableField("create_by")
    private String createBy;

    @ApiModelProperty("创建时间")
    @TableField("create_time")
    private Date createTime;

    @ApiModelProperty("更新人")
    @TableField("update_by")
    private String updateBy;

    @ApiModelProperty("更新时间")
    @TableField("update_time")
    private Date updateTime;

    @ApiModelProperty("流程状态")
    @TableField("state")
    private String state;

    @ApiModelProperty("流程实例id")
    @TableField("instance_id")
    private String instanceId;

    /**
     * 是否可用
     */
    @ApiModelProperty("是否可用")
    @TableField("is_used")
    @Excel(name = "是否可用")
    private Integer isUsed;

    @ApiModelProperty("业务type")
    @TableField(exist = false)
    private String businessType;

    @ApiModelProperty("流程模型id")
    @TableField(exist = false)
    private String modelId;

    @ApiModelProperty("创建人")
    @TableField(exist = false)
    private String createUser;

    @ApiModelProperty("销售组织")
    @TableField(exist = false)
    private String saleDeptName;

    @ApiModelProperty("币别")
    @TableField(exist = false)
    private String kingBaseCurrencyName;

    @ApiModelProperty("结算组织")
    @TableField(exist = false)
    private String settlementDeptName;

    @ApiModelProperty("收款组织Id")
    @TableField(exist = false)
    private String receiptDeptName;

    @ApiModelProperty("付款单位")
    @TableField(exist = false)
    private String payDeptName;

    @ApiModelProperty("销售组织名称")
    @TableField(exist = false)
    private String saleOrgName;

    @ApiModelProperty("币别编码")
    @TableField(exist = false)
    private String kingBaseCurrencyCode;

}